{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "dd42ef35",
   "metadata": {},
   "outputs": [],
   "source": [
    "from zhipuai import ZhipuAI\n",
    "from IPython.display import Markdown, display\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "client = ZhipuAI(api_key=\"b26dce8e00ea4053833173f86fd21c32.aOJ1lW5QQVQbx8Em\")  # 请填写您自己的APIKey\n",
    "\n",
    "def call_zhipu(prompt, temperature=0.3):\n",
    "    response = client.chat.completions.create(\n",
    "    model=\"glm-4-plus\",  # 请填写您要调用的模型名称\n",
    "    messages=[{\"role\": \"user\", \"content\": prompt}],\n",
    "        temperature=temperature\n",
    ")\n",
    "    return response.choices[0].message.content"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "b8459ce5",
   "metadata": {},
   "outputs": [],
   "source": [
    "class MockDataAgent:\n",
    "    @staticmethod\n",
    "    def get_stock_data(ticker):\n",
    "        \"\"\"模拟股票数据获取\"\"\"\n",
    "        data = {\n",
    "            '600519.SH': {\n",
    "                'close': [1800, 1850, 1900, 1820, 1950],\n",
    "                'volume': [50000, 52000, 48000, 55000, 60000],\n",
    "                'ROE': [0.32, 0.34, 0.31, 0.33, 0.35]\n",
    "            }\n",
    "        }\n",
    "        return pd.DataFrame(data[ticker], \n",
    "                          index=pd.date_range(\"2023-01-01\", periods=5))\n",
    "    \n",
    "    @staticmethod\n",
    "    def get_industry_avg(industry):\n",
    "        \"\"\"行业平均数据\"\"\"\n",
    "        return {\n",
    "            'ROE': 0.28,\n",
    "            'gross_margin': 0.45\n",
    "        }\n",
    "\n",
    "# 使用示例\n",
    "stock_data = MockDataAgent.get_stock_data('600519.SH')\n",
    "industry_data = MockDataAgent.get_industry_avg('白酒')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "4f770f02",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:15: UserWarning: Glyph 20803 (\\N{CJK UNIFIED IDEOGRAPH-5143}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:15: UserWarning: Glyph 32929 (\\N{CJK UNIFIED IDEOGRAPH-80A1}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:15: UserWarning: Glyph 20215 (\\N{CJK UNIFIED IDEOGRAPH-4EF7}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:15: UserWarning: Glyph 36208 (\\N{CJK UNIFIED IDEOGRAPH-8D70}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:15: UserWarning: Glyph 21183 (\\N{CJK UNIFIED IDEOGRAPH-52BF}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:15: UserWarning: Glyph 23545 (\\N{CJK UNIFIED IDEOGRAPH-5BF9}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:15: UserWarning: Glyph 27604 (\\N{CJK UNIFIED IDEOGRAPH-6BD4}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:16: UserWarning: Glyph 20803 (\\N{CJK UNIFIED IDEOGRAPH-5143}) missing from font(s) DejaVu Sans.\n",
      "  plt.savefig('trends.png')  # 保存供后续使用\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:16: UserWarning: Glyph 32929 (\\N{CJK UNIFIED IDEOGRAPH-80A1}) missing from font(s) DejaVu Sans.\n",
      "  plt.savefig('trends.png')  # 保存供后续使用\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:16: UserWarning: Glyph 20215 (\\N{CJK UNIFIED IDEOGRAPH-4EF7}) missing from font(s) DejaVu Sans.\n",
      "  plt.savefig('trends.png')  # 保存供后续使用\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:16: UserWarning: Glyph 36208 (\\N{CJK UNIFIED IDEOGRAPH-8D70}) missing from font(s) DejaVu Sans.\n",
      "  plt.savefig('trends.png')  # 保存供后续使用\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:16: UserWarning: Glyph 21183 (\\N{CJK UNIFIED IDEOGRAPH-52BF}) missing from font(s) DejaVu Sans.\n",
      "  plt.savefig('trends.png')  # 保存供后续使用\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:16: UserWarning: Glyph 23545 (\\N{CJK UNIFIED IDEOGRAPH-5BF9}) missing from font(s) DejaVu Sans.\n",
      "  plt.savefig('trends.png')  # 保存供后续使用\n",
      "C:\\Users\\34378\\AppData\\Local\\Temp\\ipykernel_13656\\469525964.py:16: UserWarning: Glyph 27604 (\\N{CJK UNIFIED IDEOGRAPH-6BD4}) missing from font(s) DejaVu Sans.\n",
      "  plt.savefig('trends.png')  # 保存供后续使用\n"
     ]
    },
    {
     "data": {
      "image/png": "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9vb2tkH53XfftWO2jZ07d9r/X3rpJY0dO1ZNmjTRRx99pJtuukkbNmxQzZo1dejQIRvKz2fOFRoaao/lZfTo0Ro1apSDHyEAXCglPUNfrtynyQt2aP+pc/NTlA7w0cM3VlffllVoxQKQq6fgPS0q2y67pvtu3LFEu/7x67c3VI8mFZ1dPbi5NXtP6YVvNtr7T91cS21qlXN2lQCncPnQvXz5ctvaXaVKFTsWe/DgwbZLuGmtzszMtOUeffRRPfDAA/Z+06ZNNXfuXL3//vs2OF+tESNG2DHl2UxLd2Qka2ICcGxXUdMiMGXhTh1KSLb7ypb004DW1XTftVUU6OfSL9kAnKhxZCnNfvxGPf7pai2OPaYnPltjA89zt9SVj5dLd2xEMXXsTIr9ICg1I1M31yuvQW2jnF0lwGlc9h2cmX38ueees+O8u3btavc1atRIa9assa3aJnRXqFDB7jdjts9Xt25d7dmzx94PDw+33dDPl56ebmc0N8fy4ufnZ28A4GiJKen65Lfd+ueiOPsmxQgP9tejbarbFizThRQALic00FcfPthCb/28VRPn79AHS3Zp/b54TWItZDhhLhIzU/nB+GRVLxuov9/V2M6+D7grlw3daWlp9nb+LOSGl5dXTgt31apVbav31q1bc5Ux477NZGtGy5YtderUKcXExNhJ2Ix58+bZc1x77bWF9ngA4I9OJ6fpo2W79d6vO3UyKc3uq1iqhAa2raE7m1eSnzdhG8CV8fL00PBOddS4Uik99cVardx9UreMW6yJ9zbVtdXLOLt6cBNv/merlu08rgBfL03tG82wKLg9p4Zus1Z2bGxsznZcXJxtyTbjrStXrmwnRRs+fLhdo9t0L1+4cKEds/3WW2/ljGMyx1988UW79JgZ0/3hhx9qy5Yt+ve//53T6m2WFHvkkUfsGt8myJslxe6+++58z1wOAAUpPilN7y+J0wdL4pSQnG73VS0ToEHtonRb04p0BQXwp3WsH65vhwbpsY9jtPXwad373m8a0aWOXfGApZrgSGZpy6mLzs279OYdjVWzfJCzqwS495JhCxYsULt27S7Y379/f02bNs1OdGbGVv/000+2O7gJ3mZitSeffDLXH4zXX3/drvVtypjwPWbMGN1www05x81+E7S/++4723J+++23a9y4cSpZsmS+68qSYQD+LLOermnVNq3bZ1LOhe2osJIa0i5K3RpVkDdhG0ABS0pN14iv1+ubNQfstnmteeP2RswRAYfYdvi0ncgvKTVDj7aurhG31HV2lQCHym9GdJl1ul0doRvA1TpyOlnvLtqp6cv36Gxaht1XJzxIQ9vXVOcG4bY7KAA4inmr9+HSXXr1+81Kz8xSzbCSmtI3WjXK5b/xAbichOQ0u2SdmUG/VY0y+ujBFnyYjGIvIZ8ZkY85AcBBDsaf1dSFO/Xpij1KST83F0XDiiEa2j5KHeqWZ1IZAIXC9A68//pqalAxRIM+WaXtR87YcDT2zkbq3ODcpLTAn5GZmWXnEDCBOyLEX+PvaUrgBs5DS3c+0dINIL/2nkjS5IU79O+V++xSKUazyqU09KaaalurHOMpATi1582QGau1Iu6E3TarJAzvWJuAhD9lwrztGvvTNvl6eerLx1raJewAd5BA9/KCRegGcDm7jiVq4vxYzVy933bhNK6tFqrHb6ppu9oRtgG4grSMTL3x4xa9tzjObresXkbj722qsiVZKhVXbsHWI3pg2u8yieKN2xuq9zWVnV0loNAQugsYoRtAXmKPnNaEebH6du0B/Tdr68aaZe2Y7RbVQp1dPQC4qNnrDujpf6+zk16FB/trUp9mala5tLOrhSLWs6vb+MWKP5ume1pU1uheDZ1dJaBQMaYbABxs88EEG7Z/2HDQfsJvtK8TpiHto3jjCsDldWsUodrlg/To9BjtPJqo3lOX6YXu9dXn2sr0zMFlnTUzlH8cYwO36U7+0q31nF0lwGXR0p1PtHQDyLZ+X7zGzduunzcdztnXqX5527JtJioCgKLkdHKabfH+ccMhu92rWUX9X8+GKuHr5eyqwUWZ+GAmTvt69X6VCfTVd0NvUESpEs6uFlDoaOkGgAIWs/ukxs/brgVbj9pt0xDUtWEF27JdJ5wP4wAUTUH+Ppp0XzO9++tOvf7jFn29ar82HzytKX2aqUqZQGdXDy7oo2W7beA2S16a+QAI3MClEboB4DKW7zyucXO3a+mO43bbvMno0ThCg9pFKSqMdW4BFH2mO/mA1jVsb52hM1bb4TPdxy/WO3c3Ufs65Z1dPbiQlbtO6JXZm+z9ZzvXUasaZZ1dJcDl0b08n+heDhQ/GZlZdtkcs4ROWJC/nfTMBGrDvDT+uv2YHbO9Yte5pXW8PT10R3QlDWxbg9YfAMXWwfizdj3v1XtO2W2zAsMTN9XMeX2E+zqSkKyu4xfr6OkUdW1UQRPuacr4f7i1BGYvL1iEbqB4mbPhoEZ9t0kH45Nz9lUI8dcL3erJ19tT4+fFas3ec284zbqjva+J1GNta6giXegAuIHU9Ey9+v0m243YaF2rnP7Ru4lKB/o6u2pw4u/Eve8u18rdJ1WrfEnNHHS9Av3oNAv3lkDoLliEbqB4Be6B01fpci9+/j6eurdFFT3aprrKB/sXUu0AwHV8vWqfnpu5XslpmapUuoSm9Ilmwkg39dK3GzVt6S4F+Xnr26E3qFpZenwBCUykBgAX71JuWrgvFbhNR7mHW1fTgBtrqFyQXyHWDgBcS69mlexEkY9Nj9GeE0nqNXmpXu3ZQHc1j3R21VDIH76YwG283bsJgRu4Qp5X+gUAUJSZMdzndym/GBPI29cuT+AGAEn1IoL13ZAbdFOdMNvF2CwvNuLrdUpOy3B21VAINuyP14iv19v7j7ePUod6TKwHXClCNwC3cvDU2XyVM5OrAQDOCQnw0bv9muupm2vZ5RI/XbFXd01dpn0nk5xdNTjQqaRUDfwkRinpmWpbu5ye6FDL2VUCiiRCNwC3YFpkPl62S6/9sDlf5c1s5gCA//H09NDQm2pq2gMtVCrAR+v2xdtlxX7dftTZVYODhmM9/tka7T1xVpGhJfRO7ybMYA9cJUI3gGLtbGqG/rU4Tq3HzNfz32zUscRUXeo9g8d/ZzE3y4cBAC7UplY52928YcUQnUxKU7/3V2ji/FhlZjI3b3Hyzi/btGjbUTup6NQ+zVUqgJnrgatF6AZQLJ1JSdeUhTt045h5emX2Jh05naKIEH+93KO+/bTehOs/Zu/s7Re71+PTfAC4hMjQAH35WEv1bh4psw7Om//ZqgEfxyj+bJqzq4YC8NPGQ3bpTGN0r4Z2XD+Aq8fs5QCKlYTkNH24ZJf+tSROp5LOvfkz3eIGtY3S7c0q2TW4DfP/H9fpDg/xt4G7c4MKTqs/ABQV/j5eeuOORmpauZRe+Hajftl8WD0mLNaUvtF2xnMUTTuPntFTX6y19+9vVVW3Na3k7CoBRR7rdOcT63QDrj/Zy/uL4/TB0l06nZxu91UvG6hB7aLUo0mEfLw8LzpezcxmbiZNM2O4TZdyWrgB4Mqt23dKA6ev0v5TZ2135Nd7NVLPphWdXS1cocSUdPWcuETbj5zRNVVLa8Yj11307yeAK8uIhO58InQDrunYmRS992ucnSQtMfXc8jW1ypfU4HZR6tYoghANAIXkRGKqnvhstX7dfiynlfS5W+rm9DCCazORYMiM1fp+/UGFBflp9tAbFBbMpKJAQWREupcDKJIOJyRr6sKdmrFit5LTMu2+ehWCNbR9lDrVD7ez7AIACk9ooK+d2dxMwGXGA09bukvr98dr0n3NVJ7w5vLe/XWnDdw+Xh6a3KcZgRsoQLR05xMt3YBrMF0XpyzYoc9X7lVq+rmw3TiylB5vH6X2dcLkYRaQBQA41S+bDuvJL9bY4T5lS/ppwr1NdV31Ms6uFvKwNPaY+vzrN5kJ6M2Eo/1aVnV2lYAige7lBYzQDTjXnuNJmrQgVl+t2qe0jHMvW2a82dD2NXVjzbKEbQBwMbuOJeqx6THacui0HerzbOc6evjGarxeu5gDp86q2/jFdnhAr2YV9fc7G3ONgHwidBcwQjfgHDuOnrHrv36z5oCd+MxoVaOMDdvXVQ/ljQEAuLCzqRl6buZ6zVy9327f0jBcY+5orJJ+jHB0BclpGeo9dZnW7ou3Q7S+HtTKzkoPIH8Y0w2gSNt66LQmzI/V7HUH7BqwRpta5fT4TVGKrhLq7OoBAPKhhK+X3rqrsV1W7JXZm/TD+kP29X1q3+aKCivp7Oq5vVHfbbSBu1SAj6b2jSZwAw5C6AbgUjbsj9eEebGas/FQzr4OdcvbCdLM2G0AQNFieiSZMcL1I0I06JMY7TiaaNfzHntnY3VpWMHZ1XNbn67Yo09X7JXpMDbu7qaKDA1wdpWAYovu5flE93LAsdbsPaXxc7dr7pYjdtu8CejSINwu/WXeqAEAir6jp1M0ZMYq/RZ3wm4PaF1dT3eqLW/Wgi70v7l3TVmm1IxMDe9U2/6tBXDlGNNdwAjdgGP8vuuExs3dnrOuq1npq3vjCA1pF6Wa5YOcXT0AQAFLz8jUmP9s1T8X7bTbZn6O8fc0U7kgP2dXzS0cO5Oi7uMX62B8sjrWK68pfaJZZhO4SoTuAkboBgqOedlZtuO4xs3bruU7z7V2mJltb2taUYPa1lD1cozzA4Di7of1BzX8y7VKTM1Q+WA/TbovWtFVSju7WsX+A4++/1qhZTuPq3rZQH0z5HoF+fs4u1pAsc+ITu3Ls2jRInXv3l0RERF2vM+sWbNyHT9z5oyGDBmiSpUqqUSJEqpXr56mTJmS55v4Ll26XPQ8e/bsUdeuXRUQEKCwsDANHz5c6enpDn1sAC7+PF2w9YjumLJM9773mw3cPl4euqdFZS34a1s7vo/ADQDu4ZaGFfTNkBtUo1ygDiek6O5/LtNHy3bZvxVwDNPDwATuAF8vO3EagRtwg4nUEhMT1bhxYz344IPq1avXBceHDRumefPmafr06apatap++uknDRo0yIb0W2+9NVfZd95556JLB2VkZNjAHR4erqVLl+rgwYPq16+ffHx89Nprrzn08QE4x7yB+mXzEY2ft13r9sXbfb7enrrnmkg92qaGIkqVcHYVAQBOYGYwN8H76X+vtTObv/DNRq3ec0qv3dbQznyOgmNWA8nu0m8+5GYIF1B4XKZ7uQnMM2fOVM+ePXP2NWjQQL1799bzzz+fsy86Otq2aL/66qs5+9asWaNu3bpp5cqVqlChQq7z/Pjjj/bYgQMHVL58ebvPtJY/88wzOnr0qHx9ffNVP7qXA1cuMzNLP244ZMP2lkOn7b4SPl6679rKdvKcsGB/Z1cRAOACzNvRfy2O0+gftygjM0t1woPsWOOqZQOdXbViYdvh0+o5cYmSUjP0aJvqGtGlrrOrBBQLRaJ7+eW0atVK3377rfbv329fjOfPn69t27apY8eOOWWSkpJ07733auLEibY1+4+WLVumhg0b5gRuo1OnTvYHtHHjxjy/d0pKii1z/g1A/seMzVq9Xx3fWaTBM1bZwF3Sz9uO1178TDuN7FaPwA0AyNX48vCN1fXJw9eqbElf+3ej+4TF+mXTYWdXrchLSE7Tox/H2MDdqkYZDe9Y29lVAtyOS6/TPX78eA0YMMCO6fb29panp6feffddtW7dOqfMk08+acN5jx49LnqOQ4cO5QrcRva2OZaX0aNHa9SoUQX2WAB3kJaRqZmr92vS/FjtOp5k9wX5e+vB66vpgeurqlRA/nqWAADc03XVy2j20BvtB7Yxu0/q4Y9Wamj7KP2lQy074SauvMfZsM/XKu5YoiJC/DX+nqYszwY4gcuH7uXLl9vW7ipVqtiJ1wYPHmzHdHfo0MHuN2O+V69eXeDfe8SIEXZMeTbT0h0ZGVng3wcoDlLSM/TvmH2avGCH9p08a/eVDvCxrRZ9W1ZRMBO1AADyKTzEX58+cp1e+2Gzpi3dpfHzYu260uPubqrSgXx4eyUmzo/VL5sP23lUpvSNVpmSLMsGOIPLhu6zZ8/queees+OzzURoRqNGjez47bFjx9rQbQL3jh07VKpUqVxfe/vtt+vGG2/UggULbJfzFStW5Dp++PC5rkoX646ezc/Pz94A5C05LUOfrdijqYt22vU+jbIl/TSgdTXdd20VBfq57EsMAMCFmZD40q311SSylJ79ep1+3X5M3cYv1uQ+zdSoUu73fbg4s1rIW79ss/df6VGfnxvgRC77jjgtLc3eTJfy83l5eSkzM9Pef/bZZ/Xwww/nOm7Gb7/99tt2KTKjZcuW+r//+z8dOXLELhdm/Pzzz3agu1mCDMCVS0pN1yfL9+ifv+7U0dMpdp9ZY/WxNjXs8l/+Psw4CwD483o2raja4UEaOD3GDlu6Y/Iyvdyjvu5uUdnZVXNpe44n6YnP1shMl2z+Lve+hp8X4Lah26zDHRsbm7MdFxdnW7JDQ0NVuXJltWnTxq6pbdboNt3LFy5cqI8++khvvfVWTkv1xVqrzddWq1bN3jeTrplw3bdvX40ZM8aO4x45cqTtpk5LNnBlTien6aNlu+0MsycSU+2+iqVKaGDbGrqzeSX5eRO2AQAFq26FYLus2FNfrLVdpZ/9er1dVmxUj/p8yHsRZ80M5dNjFH82TY0jS+mlW2lkAtx6yTDT/btdu3YX7O/fv7+mTZtmA7IZW23W5z5x4oQN3mZiNTN52sXW5M5r6bHdu3dr4MCB9vsFBgba87/++ut2crb8YskwuLP4pDR9sDROHyzZZf+IG1XKBGhw2yjd1qyifJiUBQBQCJOCTV64Q2N/2mpbcBtWDLHdzSuVDnB21VyGeVtvPpz4evV+lQn01ezHb1CFkBLOrhZQbOU3I7rMOt2ujtANd2Ras/+1eKc+XLpbZ1LS7b4a5QI1pH2UujeKYAZUAEChW7TtqJ74bLVOJqWpVICP/nF3U7WpVc7Z1XIJHy7dpRe/3Whnep/+0LVqWaOMs6sEFGuE7gJG6IY7OXI6We/9Gqfpy3fbdT2NOuFBNmx3aVCBZVsAAE6172SSBn2ySuv2xct0fhzWoZYGt4uSpxv/ffp91wnd88/lSs/M0siude0KIgAci9BdwAjdcAeH4pM1ZeEOfbpij1LSz01Y2KBisIa2r6mb65Z36zczAADXW0Fj1Heb7N8s46Y6YXqrdxOFlHC/ZSqPJCSr6/jFdnLTbo0q2PW48xqKCaDgELoLGKEbxb3FwKyx/eXKfUrNOBe2m1Yupcfb11Tb2uX4ww0AcFlf/L5XI7/ZoNT0TDvfyJQ+0XbyNXdhHve97y7Xyt0nVat8Sc0cdD1LdgIulhF5RgJubNexRE1aEKuvV+233dGMFtVCbdi+PqoMYRsA4PLuuiZS9SKC9ejHMdp9PEm3TVqi0b0a6ramleQO/u/7TTZwB/l5a2rf5gRuwAXxrATcUOyR05owL1bfrj2g/2Zt3RBVVkPbR+na6ky6AgAoWhpUDNHsoTfoic/X2InWnvx8rV1WbGTXevL1Lr6Tfn69ap8+XLbb3n+7dxNVKxvo7CoBuAhCN+BGNh9MsGH7hw0H7XIrRvs6YXaCtGaVSzu7egAAXLXSgb764P5r9I+52zVu7nZ9tGy31u+P16T7mhXLZbM27I/XiK/X2/uP31RTHeqVd3aVAOSBMd35xJhuFGXr98Vr3Lzt+nnT4Zx9neqXtxOkmdYBAACKk7mbD+vJz9coITldZUv6avw9zYrV8lmnklLVbfxi7Tt51s698n7/a5jsFHACJlIrYIRuFEUxu09q/LztWrD1qN02Q7S7NqxgW7brhPN7DAAovnYfT9Rj01fZXl5mqctnOtfWIzdWL/LzlWRkZumBab/bbvSVQwP07ZDrVSrA19nVAtxSAhOpAe5r+c7jNmwviT1ut82bjR6NIzSoXZSiwko6u3oAADhclTKB+npgK/1t5np9vXq/Xvthix3n/eadjVWyCE829vbP22zg9vfxtDO1E7gB11d0X3EA5GI6rSyOPabxc2O1YtcJu8/b00O3N6ukQe1q2DcfAAC4kxK+Xvr7XY3VtEppvfzdRv244ZC2HT6tqX2jFRUWpKLmp42HNGF+rL3/eq9GdtZ2AK6P0A0Ug7A9f+sRjZsbqzV7T9l9vl6euuuaSnqsTQ1VKh3g7CoCAOA0pjt53+uqqH5EsAZNX6UdRxN164QlGnNHI3VrFKGiYsfRMxr2xVp7//5WVdWzaUVnVwlAPjGmO58Y0w1Xk5mZpZ82HdaE+du1YX+C3efn7al7r62sR1vXUHiIv7OrCACASzl2JkVDZ6zWsp3nhl89fEM1Pduljry9XHtZscSUdPWcuETbj5xRi6qh+uSRa+Xj4nUG3EECY7qB4slMoPLD+oN26a+th0/bfQG+XvZT/IdvrK5yQX7OriIAAC6pbEk/ffxQC73501ZNXbhT7y2Os8uKjb+3qcKCXPPDatM+9vS/19nAHRbkpwn3NSVwA0UMoRsoItIzMvXt2gN2LNfOo4l2X5Cft/q3qqoHb6im0EAmUgEA4HJMq/aILnXVpFIpDf/3Ov0Wd0Ldxi2263k3rxoqV/Purzv1/fqD8vHy0OQ+zVz2wwEAeSN0Ay4uNT1TM1fv06QFO7T7eJLdF1LCRw9eX033X1/V3gcAAFemS8MKqhUepMc+jrGtyHf/c7lGdq1rP8x2lWXFlsYe0+s/brH3X+hWT9FVXO9DAQCXx5jufGJMNwpbclqGvly5V1MW7tT+U2ftPtOa/fCN1WxX8iB/wjYAAAUxXvqZr9Zp9rqDdrtHkwiN7tVQAb7ObZsyf/u7j1+sE4mpdiWSsXc2cpkPAwCcw5huoIg6m5qhGSv26J+LduhwQordZ8ZpP9q6up0kzdlvAgAAKE4C/bw1/p6malq5tF77YbO+WXNAWw6e1pS+0apWNtBpH7wPmh5jA7eZdf3/bmtA4AaKMN69Ay70SfvHy3frvV936tiZVLuvQoi/BratobuaR8rfx8vZVQQAoFgygfahG6qpQUSwBs9YbScqvXX8YrvGd8f64YVen5e+3ai1++JVKsBHU/pE8x4AKOLoXp5PdC+HoyQkp+nDJbv0ryVxOpWUZvdFhpbQoLZR6tWsovy8+UMLAEBhOZyQrMGfrNLK3Sft9uB2NTTs5try8iycluZPV+zRiK/XyzRsf/hAC7WuVa5Qvi8Ax2VEQnc+EbpR0E4lper9xXH6YOkunU5Ot/tMN7bB7aLseDKWAwEAwDnSMjJtV/MPluyy2zdEldW4e5o6fKWQNXtP6a4py5SakanhnWrb9wQAXBehu4ARulFQjp1J0Xu/xunjZbuUmJph99UMK6kh7aPUrVFEoX2SDgAALu2bNfv17FfrdTYtQxEh/prcJ1qNI0s57P2BmTjtYHyyOtYrb7uVe/KeAHBpTKQGuJgjCcmauminPvltt5LTMu2+uhWC9Xj7KHWqH84fVgAAXEyPJhVVJzxYj02PUdyxRN05ZZlG9aivu6+JLNCJzdIzMjVkxiobuKuXDbRjyXlfABQfhG7AwQ6cOqspC3fos9/32jW3jcaVQjS0fU3dVDeM2UgBAHBhtcOD9M2Q6/XUF2v186bDdrz16j0n9XKPBgU2wdkbc7Zo+c4TCvT10tS+0SwLChQzhG7AQfYcT9LkhbH6d8w+pWWcG8XRvEppDb2pplrXLEvYBgCgiAj299HUPtGasmiHxv5nq75YuU8bDyTYLuCRoQF/6tyz1x3Qu7/G2ftv3tlYNcsHFVCtAbgKQjdQwHYcPaNJ83do1pr9ysg8F7ZbVi+joTdF2f8J2wAAFD2mu7dZWaRxpVIa+ulqG7q7jV+sf9zdRG1rh13VObceOq2n/73O3n+0TXXd0rBCAdcagCtgIrV8YiI1XM62w6c1fl6svl93QP/N2naZDzNmu3nVUGdXDwAAFJD9p85q0PQYu5a2+Sz9yQ61NKRd1BWNwzZLhvaYsMSOFb8+qoxdHsyblUuAIoXZywsYoRt52XggXhPmxerHDYdy9nWoG6Yh7WuqiYNmOAUAAM6Vkp6hUd9t0ozf9tjt9nXC9PZdTRQScPnx2JmZWRrwcYx+2XzYzor+3dAbVKakXyHUGkBBYvZywMHMWpoT5m3XL5uP5Ozr0iDcLv1VPyLEqXUDAACO5eftpddua6imkaU0ctYGzdtyRN0nLNbkPs0u+z5g4vxYG7h9vT01pW80gRso5gjdwBX6fdcJjZu7Xb9uP2a3TU8ys762Cdu1mPwEAAC3cmfzSLsE6MBPYrTnRJJ6TVpqw/jt0ZUuWn7+1iN665dt9v6rPRqoUSV6xQHFnVMHjixatEjdu3dXRESEnVxq1qxZuY6fOXNGQ4YMUaVKlVSiRAnVq1dPU6ZMyTl+4sQJDR06VLVr17bHK1eurMcff9w2759vz5496tq1qwICAhQWFqbhw4crPT290B4nij4zCmNp7DHd/c9ldo1OE7i9PD10R3Ql/TKsjcbd05TADQCAm2pQMUTfDblBbWuXU0p6pp76cq1Gzlpvu6CbSVWX7Tiub9bs1zer9+vxGatkBnfee21l3XVNpLOrDqC4t3QnJiaqcePGevDBB9WrV68Ljg8bNkzz5s3T9OnTVbVqVf30008aNGiQDem33nqrDhw4YG9jx461gXz37t167LHH7L5///vf9hwZGRk2cIeHh2vp0qU6ePCg+vXrJx8fH7322mtOeNQoamF74bajdoK0mN0n7T4fLxO2IzWobY0/vUwIAAAoHkoF+Or9/tdo3Lzt+sfc7Zq+fI8Wbz+mpNQMHTmdkqts1TIBerF7PafVFUDhcpmJ1ExL98yZM9WzZ8+cfQ0aNFDv3r31/PPP5+yLjo5Wly5d9Oqrr170PF9++aX69OljA723t7d+/PFHdevWzQbx8uXL2zKmtfyZZ57R0aNH5evrm6/6MZGaezFPCzNW24zZNjOTGmbc1T3XROrRNjUUUaqEs6sIAABc1PwtRzTokxidTcvMs8yUPs3UuQFLhAFFWX4zokuvS9CqVSt9++232r9/vw1B8+fP17Zt29SxY8c8vyb7AZvAbSxbtkwNGzbMCdxGp06d7A9o48aNhfI4UHSY2UR/WH9Qt4xbrEc+WmkDdwkfLz18QzUtfrqdRvVoQOAGAACXZJYMLemX9yzmZmExM/O56XoOoPhz6YnUxo8frwEDBtgx3SZEe3p66t1331Xr1q0vWv7YsWN65ZVX7NdkO3ToUK7AbWRvm2N5SUlJsbdsJqSj+DJ/9GavO2CX/tp+5IzdF+jrpX6tqtrAzayiAAAgv1bEndDRM7m7lJ/PRO2D8cm2XMsaZQq1bgAKn8uH7uXLl9vW7ipVqtiJ1wYPHmzHdHfo0CFXWROKzdhtM7b7pZde+tPfe/To0Ro1atSfPg9cW1pGpmat3q9JC3Yo7lii3Rfk760Hrq+mB6+vasdnAQAAXIkjp5MLtByAos1lQ/fZs2f13HPP2XHeJkwbjRo10po1a+zEaeeH7tOnT6tz584KCgqy5c0kadnMBGorVqzIde7Dhw/nHMvLiBEj7ERu54f6yEhmmCwuzGyiX8WYsB2rfSfP2n2lAnxsq7Zp3Q72z7tLGAAAwKWEBfkXaDkARZvLhu60tDR7M13Kz+fl5aXMzMxcYdiM0fbz87Mt4v7+uV+8WrZsqf/7v//TkSNH7HJhxs8//2zHfZtW8byY85kbipfktAx9/vteTVm4w3brMsqW9NUjN1ZXn+uqKNDPZZ8SAACgiGhRLVQVQvx1KD7ZdiW/2Jju8BB/Ww5A8efUhGHW4Y6Njc3ZjouLsy3ZoaGhds3tNm3a2DW1zRrcpnv5woUL9dFHH+mtt97KCdxmUrWkpCS7rJjZzh57Xa5cORvQzXETrvv27asxY8bYcdwjR4603dQJ1e4jKTVdM37bo6mLdurof5ftKB/sp0db19A9LSqrhK+Xs6sIAACKCS9PD7sk2MDpq2zAPj94m23DHDflABR/Tl0ybMGCBWrXrt0F+/v3769p06bZgGy6eZv1uU+cOGGDt5kk7cknn7RLjOX19dkB3qztbZj1uwcOHGjLBwYG2vO//vrrOTOc5wdLhhVNp5PT9PHy3Xrv1zidSEy1+yqWKqHH2tbQndGV5O9D2AYAAI4xZ8NBO0t5du86w7SAm8DNcmFA0ZffjOgy63S7OkJ30RKflKYPlsbpgyW7FH82ze6rHBqgwe1q6Lamleya2wAAAIWxQoqZpdxMmmbGcJsu5bRwA+6VERnAimLFtGb/a/FOfbR0t06npNt91csFaki7KN3aOELeXoRtAABQeEzAZlkwwL0RulEsmHHa7/66U9OX71ZSaobdV7t8kIbeFKUuDSrwiTIAAAAApyB0o0gzs4Kamcg/XbFHKennZrVvUDFYQ9vX1M11y8uTsA0AAADAiQjdKJL2nUzS5AU79OXKfUrNOBe2m1Yupcfb11Tb2uXsRHsAAAAA4GyEbhQpu44latKCWH29ar/SM8/NAWgmJDFh+/qoMoRtAAAAAC6F0I0iIfbIGU2cH6tv1uzXf7O2bogqq6Hto3RtdSYnAQAAAOCaCN1waVsOJWj8vFj9sP6gshe3a1e7nIa0r6noKqWdXT0AAAAAuCRCN1zS+n3xGj9vu37adDhnX8d65e0EaQ0rhTi1bgAAAACQX4RuuJSY3Sc1Yd52zd961G6bIdq3NKxg19muWyHvBecBAAAAwBURuuESlu88blu2l8Qet9tmpa8eTSpqcLsaigoLcnb1AAAAAOCqELrhNFlZWTZkj5u3XSviTth93p4e6tWsoga1jVLVsoHOriIAAAAA/CmEbjglbM/fesROkLZ6zym7z9fLU3c2r6TH2tRQZGiAs6sIAAAAAAWC0I1Ck5mZZSdGmzB/uzbsT7D7/Lw9dU+LyjZsh4f4O7uKAAAAAFCgCN1wuIzMLLvkl1lne8uh03ZfgK+X+l5XRQ/dWE1hQYRtAAAAAMUToRsOk56RqW/XHrBhe8fRRLsvyM9b/VtV1YM3VFNooK+zqwgAAAAADkXoRoFLTc/UzNX7NGnBDu0+nmT3Bft726D9QKtqCgnwcXYVAQAAAKBQELpRYFLSM/TFyn2asmCH9p86a/eZ1uyHb6xmu5IH+RO2AQAAALgXQjf+tLOpGfp0xR5NXbRDhxNS7L5yQX56tHV13XttZQX48msGAAAAwD2RhnDVElPSNX35br37604dO5Nq91UI8bczkfe+JlL+Pl7OriIAAAAAOBWhG1csITlNHy3dpX8tjtPJpDS7r1LpEhrUNkq3R1eUnzdhGwAAAAAMQjfy7VRSqt5fsksfLInT6eR0u69a2UANaltDPZtWlI+Xp7OrCAAAAAAuhdCNyzp2JsW2apvW7cTUDLuvZlhJDWkfpW6NIuTl6eHsKgIAAACASyJ0I09HEpI1ddFOffLbbiWnZdp9dSsEa2j7KHWuHy5PwjYAAAAAXBKhGxc4cOqspizcoc9+32vX3DYaVQrR0PY11aFumDw8CNsAAAAAkB+EbuTYeyJJkxbE6t8x+5SWkWX3RVcpbVu229QqR9gGAAAAgCtE6IZ2Hj2jifN3aNaa/crIPBe2r6seqsdvqqmW1csQtgEAAADgKhG63di2w6c1YV6sZq87oP9mbbWuVc62bF9TNdTZ1QMAAACAIo/Q7YY2Hoi3YfvHDYdy9pmx2kPa11STyFJOrRsAAAAAFCeEbjeydu8pjZ+3Xb9sPpKzr0uDcLv0V/2IEKfWDQAAAACKI09nfvNFixape/fuioiIsOOGZ82alev4mTNnNGTIEFWqVEklSpRQvXr1NGXKlFxlkpOTNXjwYJUpU0YlS5bU7bffrsOHD+cqs2fPHnXt2lUBAQEKCwvT8OHDlZ6eruLEjMVetuO4vlmz3/6fPTbbWLnrhPq9v0I9Ji6xgdus9HVr4wj99GRrTe4TTeAGAAAAgOLY0p2YmKjGjRvrwQcfVK9evS44PmzYMM2bN0/Tp09X1apV9dNPP2nQoEE2pN966622zJNPPqnvv/9eX375pUJCQmxIN+dasmSJPZ6RkWEDd3h4uJYuXaqDBw+qX79+8vHx0WuvvabiYM6Ggxr13SYdjE/O2Rce4q+7r4nUbztPaNnO43afl6eHejapqMHtaqh6uZJOrDEAAAAAuAePrKys/zWJOpFp6Z45c6Z69uyZs69Bgwbq3bu3nn/++Zx90dHR6tKli1599VXFx8erXLlymjFjhu644w57fMuWLapbt66WLVum6667Tj/++KO6deumAwcOqHz58raMaS1/5plndPToUfn6+uarfgkJCTbUm+8ZHBwsVwrcA6ev0qUuoo+Xh+6IrqSBbaJUuUxAIdYOAAAAAIqn/GZEp3Yvv5xWrVrp22+/1f79+2U+G5g/f762bdumjh072uMxMTFKS0tThw4dcr6mTp06qly5sg3dhvm/YcOGOYHb6NSpk/0Bbdy4UUWZ6UJuWrgvFbgDfL0096m2Gt2rEYEbAAAAAAqZS0+kNn78eA0YMMCO6fb29panp6feffddtW7d2h4/dOiQbakuVSr3jNsmYJtj2WXOD9zZx7OP5SUlJcXespmQ7mpWxJ3I1aX8YpJSM7T/5FlVDiVwAwAAAEBh83T10L18+XLb2m1atf/+97/bSdN++eUXh3/v0aNH264C2bfIyEi5miOnkwu0HAAAAADATUL32bNn9dxzz+mtt96yM5w3atTITpJmxniPHTvWljGTo6WmpurUqVO5vtbMXm6OZZf542zm2dvZZS5mxIgRtm9+9m3v3r1yNWFB/gVaDgAAAADgJqHbjNU2N9Ol/HxeXl7KzMzMmVTNzEI+d+7cnONbt261S4S1bNnSbpv/169fryNH/rc29c8//2wHupslyPLi5+dny5x/czUtqoWqQoi/PPI4bvab46YcAAAAAMDNxnSbdbhjY2NztuPi4rRmzRqFhobaydDatGlj19Q2a3RXqVJFCxcu1EcffWRbvw3T7fuhhx6yS4uZrzHBeOjQoTZom5nLDTPpmgnXffv21ZgxY+w47pEjR9pu6iZYF2VmCbAXu9ezs5ebgH3+hGrZQdwcN+UAAAAAAG62ZNiCBQvUrl27C/b3799f06ZNswHZdPM263OfOHHCBm8zsZpZm9ssMWYkJyfrqaee0qeffmonPjMzk0+aNClX1/Hdu3dr4MCB9vsFBgba87/++ut2crb8ctUlw/Jap9u0cJvA3blBBafWDQAAAACKo/xmRJdZp9vVuXLozl4+zMxmbiZNM2O4TZdyWrgBAAAAwLkZ0aWXDEP+mYDdskYZZ1cDAAAAAFAUJlIDAAAAAKCoI3QDAAAAAOAghG4AAAAAAByE0A0AAAAAgIMQugEAAAAAcBBCNwAAAAAADkLoBgAAAADAQVinO5+ysrJyFkAHAAAAALi3hP9mw+ysmBdCdz6dPn3a/h8ZGensqgAAAAAAXCgrhoSE5HncI+tysRxWZmamDhw4oKCgIHl4eMhVP2kxHwrs3btXwcHBzq4OzsO1cV1cG9fEdXFdXBvXxbVxXVwb18W1cV0JReDamChtAndERIQ8PfMeuU1Ldz6ZH2KlSpVUFJhfSlf9xXR3XBvXxbVxTVwX18W1cV1cG9fFtXFdXBvXFezi1+ZSLdzZmEgNAAAAAAAHIXQDAAAAAOAghO5ixM/PTy+++KL9H66Fa+O6uDauieviurg2rotr47q4Nq6La+O6/IrRtWEiNQAAAAAAHISWbgAAAAAAHITQDQAAAACAgxC6AQAAAABwEEK3A02cOFFVq1aVv7+/rr32Wq1YsSLX8X/+859q27atXXfOw8NDp06dytd59+zZo65duyogIEBhYWEaPny40tPTc44fPHhQ9957r2rVqmXXF//LX/5SIOc1FixYoGbNmtkJDaKiojRt2jQVRUXt2jz++OOKjo62P/cmTZpccNxclx49eqhChQoKDAy0ZT755BMVRc66Nl9//bVuvvlmlStXzp67ZcuW+s9//nPZ865bt0433nijrW9kZKTGjBlzQZkvv/xSderUsWUaNmyoH374QUVNUbouycnJuv/+++3P2tvbWz179rygzNVeb1fkrGuzePFiXX/99SpTpoxKlChhf8fffvvty57XXZ4zRe3a8LwpnGtzviVLltif9cX+rv8RzxvXvDY8bwrn2ixYsMCe74+3Q4cOFZnnDaHbQT7//HMNGzbMzri3atUqNW7cWJ06ddKRI0dyyiQlJalz58567rnn8n3ejIwM+0uZmpqqpUuX6sMPP7TB94UXXsgpk5KSYp/YI0eOtN+3oM4bFxdny7Rr105r1qyxgfHhhx8uci8cRe3aZHvwwQfVu3fvix4z369Ro0b66quv7AvMAw88oH79+mn27NkqSpx5bRYtWmT/KJoX25iYGPt73r17d61evTrP8yYkJKhjx46qUqWK/Zo333xTL730kv2jk818v3vuuUcPPfSQPZf5g2xuGzZsUFFR1K6LOa8JGubDqg4dOly0zNWc1xU589qYD/iGDBlif5abN2+2r2vmdv7vv7s+Z4riteF5UzjXJpsJI+bv9E033XTZ8/K8cd1rw/OmcK/N1q1bbQNW9s0E9CLzvDGzl6PgtWjRImvw4ME52xkZGVkRERFZo0ePvqDs/PnzzQzyWSdPnrzseX/44YcsT0/PrEOHDuXsmzx5clZwcHBWSkrKBeXbtGmT9cQTTxTIeZ9++ums+vXr5/q63r17Z3Xq1CmrKClq1+Z8L774Ylbjxo3zVfaWW27JeuCBB7KKEle5Ntnq1auX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AIBiYtq0afLw8Mi5eXt7q2LFirr//vu1f//+C8pnZWXp448/VuvWrVWqVCkFBASoYcOGevnll5WYmHhB+bZt2+Y6//m3OnXqFNKjBACgaPF2dgUAAEDBMqG5WrVqSk5O1vLly20YX7x4sTZs2CB/f39bJiMjQ/fee6+++OIL3XjjjXrppZds6P711181atQoffnll/rll19Uvnz5XOeuVKmSRo8efcH3DAkJsf9v3LhRTZs2la+v70Xrlpqaqs2bN9u65adcjRo1CuAnAgCA8xC6AQAoZrp06aLmzZvb+w8//LDKli2rN954Q99++63uuusuu3/MmDE2cP/1r3/Vm2++mfO1AwYMsGV69uxpW8h//PHHC8J1nz598vzepvW8RYsWNuRfzHXXXWfL5LccAABFHd3LAQAo5kxLtrFjxw77/9mzZ23QrlWr1kVbrbt3767+/ftrzpw5tqUcAABcPUI3AADF3K5du+z/pUuXtv+b1uWTJ0/a7uVm3PfF9OvXz/4/e/bsXPtNt/Rjx45dcLvYGHAAAED3cgAAip34+HgbhM246d9++82O0fbz81O3bt3s8U2bNtn/GzdunOc5so+ZcdXn27Jli8qVK3dB+UcffVRTpkwp4EcCAEDRR+gGAKCY6dChQ67tqlWravr06XYSNOP06dP2/6CgoDzPkX0sISHhgnO9++67F5TPPjcAAMiN0A0AQDEzceJEO17btHi///77WrRokW3p/mOgzg7fF5NXMA8MDLwg1AMAgLwxphsAgGLGzApugvHtt99uZyxv0KCBHb995swZe7xu3br2/3Xr1uV5juxj9erVK6RaAwBQPBG6AQAoxry8vOwM5QcOHNCECRPsvhtuuEGlSpXSjBkz7MRoF/PRRx/Z/7PHgQMAgKtD6AYAoJhr27atbf1+55137ORqAQEBdn3urVu36m9/+9sF5b///ntNmzZNnTp1sutlAwCAq8eYbgAA3MDw4cN155132jD92GOP6dlnn9Xq1av1xhtvaNmyZbYreokSJexyYmbSNdMF/cMPP7zgPGacuDl+MX369CmERwIAQNFC6AYAwA306tVLNWrU0NixY/XII4/YbudffPGF7Ub+3nvv6fnnn1dqaqot8+KLL+qpp56yk6b90b59+9S3b9+Lfg9CNwAAFyJ0AwBQTNx///32djGenp6KjY29YN+lvuaP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",
      "text/plain": [
       "<Figure size 1000x800 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_financial_trends(df):\n",
    "    fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))\n",
    "    \n",
    "    # 股价走势\n",
    "    ax1.plot(df.index, df['close'], label='收盘价', marker='o')\n",
    "    ax1.set_title('股价走势')\n",
    "    ax1.set_ylabel('元')\n",
    "    \n",
    "    # ROE趋势\n",
    "    ax2.bar(df.index, df['ROE'], width=0.3, label='ROE')\n",
    "    ax2.axhline(industry_data['ROE'], color='r', linestyle='--', \n",
    "               label='行业平均')\n",
    "    ax2.set_title('ROE对比')\n",
    "    \n",
    "    plt.tight_layout()\n",
    "    plt.savefig('trends.png')  # 保存供后续使用\n",
    "    return fig\n",
    "\n",
    "# 在Notebook中显示\n",
    "plot_financial_trends(stock_data)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "78b42cec",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "## 公司概述"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/markdown": [
       "**上市公司分析报告概述**\n",
       "\n",
       "截至2023年1月5日，该公司最新收盘价为1950元，显示出市场对其价值的积极认可。近5日ROE均值为0.33，显著高于行业平均水平的0.28，表明公司盈利能力强劲，资本运用效率优异。这一数据不仅凸显其在行业内的竞争优势，也为投资者提供了积极的投资信号。本报告将深入剖析其财务状况、市场表现及未来增长潜力，为投资决策提供全面参考。"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/markdown": [
       "## 估值分析"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/markdown": [
       "### 估值分析\n",
       "\n",
       "#### 1. 使用PE/PB/PS方法估算合理股价区间\n",
       "\n",
       "**a. PE（市盈率）估值法**\n",
       "\n",
       "市盈率（PE） = 股价 / 每股收益（EPS）\n",
       "\n",
       "假设行业平均PE为20倍（具体数值需根据行业实际情况调整）。\n",
       "\n",
       "首先计算每股收益（EPS）：\n",
       "- EPS = 净利润 / 总股本\n",
       "- 假设总股本为1亿股（具体数值需根据实际情况调整）\n",
       "\n",
       "以ROE（净资产收益率）估算净利润：\n",
       "- 净资产 = 股价 * 总股本\n",
       "- 净利润 = 净资产 * ROE\n",
       "\n",
       "以2023-01-05的数据为例：\n",
       "- 净资产 = 1950 * 1亿 = 1950亿\n",
       "- 净利润 = 1950亿 * 0.35 = 682.5亿\n",
       "- EPS = 682.5亿 / 1亿 = 68.25元\n",
       "\n",
       "合理股价（PE法） = EPS * 行业平均PE = 68.25 * 20 = 1365元\n",
       "\n",
       "**b. PB（市净率）估值法**\n",
       "\n",
       "市净率（PB） = 股价 / 每股净资产\n",
       "\n",
       "假设行业平均PB为2倍（具体数值需根据行业实际情况调整）。\n",
       "\n",
       "每股净资产：\n",
       "- 每股净资产 = 净资产 / 总股本\n",
       "- 以2023-01-05的数据为例，每股净资产 = 1950元\n",
       "\n",
       "合理股价（PB法） = 每股净资产 * 行业平均PB = 1950 * 2 = 3900元\n",
       "\n",
       "**c. PS（市销率）估值法**\n",
       "\n",
       "市销率（PS） = 股价 / 每股销售额\n",
       "\n",
       "假设行业平均PS为1.5倍（具体数值需根据行业实际情况调整）。\n",
       "\n",
       "每股销售额：\n",
       "- 假设总销售额为1000亿（具体数值需根据实际情况调整）\n",
       "- 每股销售额 = 总销售额 / 总股本 = 1000亿 / 1亿 = 100元\n",
       "\n",
       "合理股价（PS法） = 每股销售额 * 行业平均PS = 100 * 1.5 = 150元\n",
       "\n",
       "#### 2. 与当前股价1950元对比\n",
       "\n",
       "- PE法估算的合理股价：1365元\n",
       "- PB法估算的合理股价：3900元\n",
       "- PS法估算的合理股价：150元\n",
       "\n",
       "对比当前股价1950元：\n",
       "- PE法显示当前股价偏高\n",
       "- PB法显示当前股价偏低\n",
       "- PS法显示当前股价严重偏高\n",
       "\n",
       "综合来看，当前股价1950元可能处于相对合理的区间，但存在一定的偏高风险。\n",
       "\n",
       "#### 3. 主要风险因素\n",
       "\n",
       "1. **市场波动风险**：股市整体波动可能影响公司股价。\n",
       "2. **行业风险**：行业政策变化、竞争加剧等可能影响公司盈利能力。\n",
       "3. **财务风险**：公司负债水平、现金流状况等可能影响其财务稳定性。\n",
       "4. **经营风险**：公司管理层决策失误、运营效率低下等可能影响公司业绩。\n",
       "5. **宏观经济风险**：宏观经济环境变化（如通货膨胀、利率变动等）可能影响公司经营和股价。\n",
       "6. **估值假设风险**：估值过程中使用的行业平均PE、PB、PS等假设值可能与实际情况存在偏差。\n",
       "\n",
       "### 结论\n",
       "\n",
       "通过PE、PB、PS三种方法的估值分析，当前股价1950元在某些方法下显示偏高，在其他方法下显示偏低，综合来看处于相对合理但存在一定风险的区间。投资者需关注上述风险因素，谨慎决策。"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def generate_report_section(data, section_type):\n",
    "    # 构造专业提示词\n",
    "    templates = {\n",
    "        \"overview\": f\"\"\"作为资深金融分析师，请撰写上市公司分析报告的开篇概述，要求：\n",
    "        1. 包含{data.index[-1].strftime('%Y-%m-%d')}最新收盘价{data['close'].iloc[-1]}元\n",
    "        2. 近5日ROE均值为{data['ROE'].mean():.2f}\n",
    "        3. 与行业平均ROE({industry_data['ROE']})对比\n",
    "        4. 不超过200字\"\"\",\n",
    "        \n",
    "        \"valuation\": f\"\"\"基于以下数据进行估值分析：\n",
    "        {data.tail(3).to_markdown()}\n",
    "        \n",
    "        要求：\n",
    "        1. 使用PE/PB/PS至少两种方法估算合理股价区间\n",
    "        2. 与当前股价{data['close'].iloc[-1]}元对比\n",
    "        3. 列出主要风险因素\"\"\"\n",
    "    }\n",
    "    \n",
    "    return call_zhipu(templates[section_type])\n",
    "\n",
    "# 生成报告章节\n",
    "overview = generate_report_section(stock_data, \"overview\")\n",
    "valuation = generate_report_section(stock_data, \"valuation\")\n",
    "\n",
    "# 在Notebook中美观显示\n",
    "display(Markdown(\"## 公司概述\"))\n",
    "display(Markdown(overview))\n",
    "display(Markdown(\"## 估值分析\")) \n",
    "display(Markdown(valuation))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "a920d97b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "\n",
       "# 600519.SH 投资分析报告\n",
       "**报告日期**：2025-06-07\n",
       "\n",
       "**上市公司分析报告开篇概述**\n",
       "\n",
       "截至2023年1月5日，该公司最新收盘价为1950元，显示出市场对其价值的积极认可。近5日其ROE均值为0.33，显著高于行业平均水平的0.28，体现出公司较强的盈利能力和资本运用效率。这一优异表现不仅凸显其在行业内的竞争优势，也为投资者提供了积极的投资信号。本报告将深入剖析其财务状况、市场表现及未来潜力，以期为投资者提供全面决策依据。\n",
       "\n",
       "## 财务趋势分析\n",
       "![财务趋势图](trends.png)\n",
       "\n",
       "### 估值分析\n",
       "\n",
       "#### 1. 使用PE/PB/PS方法估算合理股价区间\n",
       "\n",
       "**假设条件：**\n",
       "- 行业平均PE（市盈率）为20倍\n",
       "- 行业平均PB（市净率）为2倍\n",
       "- 行业平均PS（市销率）为1.5倍\n",
       "- 公司每股收益（EPS）为100元\n",
       "- 公司每股净资产（BPS）为800元\n",
       "- 公司每股销售额（SPS）为1200元\n",
       "\n",
       "**计算方法：**\n",
       "\n",
       "**a. PE估值法：**\n",
       "\\[ \\text{合理股价} = \\text{EPS} \\times \\text{行业平均PE} \\]\n",
       "\\[ \\text{合理股价} = 100 \\times 20 = 2000 \\text{元} \\]\n",
       "\n",
       "**b. PB估值法：**\n",
       "\\[ \\text{合理股价} = \\text{BPS} \\times \\text{行业平均PB} \\]\n",
       "\\[ \\text{合理股价} = 800 \\times 2 = 1600 \\text{元} \\]\n",
       "\n",
       "**c. PS估值法：**\n",
       "\\[ \\text{合理股价} = \\text{SPS} \\times \\text{行业平均PS} \\]\n",
       "\\[ \\text{合理股价} = 1200 \\times 1.5 = 1800 \\text{元} \\]\n",
       "\n",
       "**综合估值区间：**\n",
       "根据以上三种方法的计算结果，合理股价区间为1600元至2000元。\n",
       "\n",
       "#### 2. 与当前股价1950元对比\n",
       "\n",
       "- **当前股价：** 1950元\n",
       "- **估值区间：** 1600元至2000元\n",
       "\n",
       "**对比分析：**\n",
       "- 当前股价1950元处于合理估值区间（1600元至2000元）的中上部，表明当前股价较为合理，但略偏高。\n",
       "\n",
       "#### 3. 主要风险因素\n",
       "\n",
       "**a. 市场风险：**\n",
       "- 宏观经济波动可能导致市场需求下降，影响公司业绩。\n",
       "- 行业竞争加剧，可能导致市场份额和利润率下降。\n",
       "\n",
       "**b. 公司经营风险：**\n",
       "- 公司管理层决策失误，影响公司长期发展。\n",
       "- 供应链中断或成本上升，影响公司盈利能力。\n",
       "\n",
       "**c. 财务风险：**\n",
       "- 公司负债水平较高，财务杠杆风险增加。\n",
       "- 现金流不足，可能导致资金链断裂。\n",
       "\n",
       "**d. 政策风险：**\n",
       "- 政府政策变化，如税收政策、环保政策等，可能增加公司运营成本。\n",
       "- 行业监管政策变化，可能影响公司业务模式和市场准入。\n",
       "\n",
       "**e. 技术风险：**\n",
       "- 技术更新换代快，公司研发投入不足可能导致产品竞争力下降。\n",
       "- 知识产权保护不力，可能导致核心技术泄露。\n",
       "\n",
       "### 结论\n",
       "\n",
       "根据PE、PB、PS三种估值方法，合理股价区间为1600元至2000元，当前股价1950元处于该区间的中上部，表明股价较为合理但略偏高。投资者需关注市场风险、公司经营风险、财务风险、政策风险和技术风险等因素，以做出更全面的投资决策。\n",
       "\n",
       "## 投资建议\n",
       "由于您没有提供具体的分析内容，我将基于一般性的投资分析框架来给出买入、持有或卖出的建议，并说明理由。请注意，实际投资决策应基于详细的市场分析、公司财务状况、行业趋势等多方面因素。\n",
       "\n",
       "### 买入建议\n",
       "\n",
       "**理由：**\n",
       "1. **基本面强劲**：公司财务状况良好，盈利能力强，资产负债表健康。\n",
       "2. **增长潜力大**：所处行业前景广阔，公司具备明显的竞争优势和市场份额。\n",
       "3. **估值合理**：当前股价相对于公司内在价值和未来增长潜力被低估。\n",
       "4. **市场情绪积极**：宏观经济环境向好，市场情绪乐观，有利于股价上涨。\n",
       "\n",
       "**示例：**\n",
       "“建议买入XX公司股票，因为该公司连续三年盈利增长超过20%，行业地位稳固，且当前市盈率低于行业平均水平，具备较高的投资价值。”\n",
       "\n",
       "### 持有建议\n",
       "\n",
       "**理由：**\n",
       "1. **基本面稳定**：公司财务状况稳定，盈利能力保持平稳。\n",
       "2. **市场不确定性**：当前市场环境存在不确定性，短期内股价波动较大。\n",
       "3. **估值适中**：股价基本反映了公司的内在价值，不存在明显低估或高估。\n",
       "4. **长期潜力**：公司具备长期增长潜力，但短期内可能不会有显著表现。\n",
       "\n",
       "**示例：**\n",
       "“建议持有XX公司股票，尽管短期内市场波动较大，但公司基本面稳定，且长期来看具备持续增长的潜力。”\n",
       "\n",
       "### 卖出建议\n",
       "\n",
       "**理由：**\n",
       "1. **基本面恶化**：公司财务状况恶化，盈利能力下降，资产负债表出现问题。\n",
       "2. **增长前景不明**：所处行业面临衰退风险，公司竞争优势减弱。\n",
       "3. **估值过高**：当前股价明显高估，超出公司内在价值和未来增长潜力。\n",
       "4. **市场风险增加**：宏观经济环境恶化，市场风险增加，不利于股价表现。\n",
       "\n",
       "**示例：**\n",
       "“建议卖出XX公司股票，因为公司近期财务报表显示盈利大幅下滑，且行业前景不明朗，当前股价已明显高估，存在较大回调风险。”\n",
       "\n",
       "### 综合建议\n",
       "\n",
       "在实际操作中，建议投资者结合具体情况，进行详细的分析和判断。以下是一些综合性的建议：\n",
       "\n",
       "1. **定期复盘**：定期审视投资组合，评估公司基本面和市场环境的变化。\n",
       "2. **分散投资**：避免单一股票或行业的过度集中，分散风险。\n",
       "3. **关注宏观经济**：密切关注宏观经济和政策变化，及时调整投资策略。\n",
       "4. **长期视角**：注重公司的长期增长潜力，避免过度关注短期波动。\n",
       "\n",
       "**请注意**：以上建议仅供参考，实际投资决策应基于全面的分析和个人风险承受能力。建议咨询专业的财务顾问以获取更具体的投资建议。\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def generate_full_report(ticker):\n",
    "    # 获取数据\n",
    "    data = MockDataAgent.get_stock_data(ticker)\n",
    "    \n",
    "    # 生成内容\n",
    "    report = f\"\"\"\n",
    "# {ticker} 投资分析报告\n",
    "**报告日期**：{pd.Timestamp.now().strftime('%Y-%m-%d')}\n",
    "\n",
    "{generate_report_section(data, \"overview\")}\n",
    "\n",
    "## 财务趋势分析\n",
    "![财务趋势图](trends.png)\n",
    "\n",
    "{generate_report_section(data, \"valuation\")}\n",
    "\n",
    "## 投资建议\n",
    "{call_zhipu(\"基于上述分析，给出明确的买入/持有/卖出建议，并说明理由\")}\n",
    "\"\"\"\n",
    "    \n",
    "    # 保存为Markdown\n",
    "    with open(f\"{ticker}_report.md\", \"w\") as f:\n",
    "        f.write(report)\n",
    "    \n",
    "    return Markdown(report)\n",
    "\n",
    "# 生成并显示完整报告\n",
    "generate_full_report('600519.SH')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "065f221c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成PDF报告\n",
    "import pdfkit\n",
    "\n",
    "def convert_to_pdf(ticker):\n",
    "    html_file = f\"{ticker}_report.html\"\n",
    "    pdf_file = f\"{ticker}_report.pdf\"\n",
    "    \n",
    "    with open(html_file, \"w\") as f:\n",
    "        f.write(generate_full_report(ticker).data)\n",
    "    \n",
    "    pdfkit.from_file(html_file, pdf_file)\n",
    "    print(f\"PDF报告已生成：{pdf_file}\")\n",
    "\n",
    "convert_to_pdf('600519.SH')  # 需要配置wkhtmltopdf路径"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
